﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using CajaChica.Entidades;
namespace CajaChica.Clases
{
    class clsRequerimientoCabecera
    {
        cajaEntities objCajaEntidades;
        public void Guardar(DateTime fechaSolicitud, DateTime fechaAprobacion, int responsableRequerimiento,
            int responsableAprobacion, bool aprobado, string moneda, string motivo, decimal total,
            int serie, int numero, int usuario)
        {
            objCajaEntidades = new cajaEntities();

            requerimiento_cabecera cabecera = new requerimiento_cabecera 
            {
                fecha_solicitud = fechaSolicitud, 
                fecha_aprobacion = fechaAprobacion,
                id_responsable_requerimiento = responsableRequerimiento,
                id_resonsable_aprobacion = responsableAprobacion,
                aprobado = aprobado,
                moneda = moneda,
                motivo = motivo,
                total = total,
                serie = serie,
                numero = numero,
                id_usuario = usuario,
                fecha_registro = DateTime.Now
            };
            
            objCajaEntidades.AddTorequerimiento_cabecera(cabecera);
            objCajaEntidades.SaveChanges();
        }

        public ArrayList CargarDatosDataGridView()
        {
            ArrayList lista = new ArrayList();
            objCajaEntidades = new cajaEntities();

            var query = from rc in objCajaEntidades.requerimiento_cabecera
                        join rr in objCajaEntidades.personas on rc.id_responsable_requerimiento equals rr.id //responsable de requerimiento
                        join ra in objCajaEntidades.personas on rc.id_resonsable_aprobacion equals ra.id //responsable de aprobar el requerimiento
                        select new 
                        {
                            ID = rc.id,
                            FECHA_SOLICITUD = rc.fecha_solicitud,
                            FECHA_APROBACION = rc.fecha_aprobacion,
                            ID_RESPONSABLE_REQUERIMIENTO = rc.id_resonsable_aprobacion,
                            RESPOSABLE_REQUERIMIENTO = rr.rs,
                            ID_RESPONSABLE_APROBACION = ra.id,
                            RESPONSABLE_APROBACION = ra.rs,
                            APROBADO = rc.aprobado,
                            MONEDA = rc.moneda,
                            MOTIVO = rc.motivo,
                            TOTAL = rc.total
                        };

            foreach (var datos in query)
            {
                lista.Add(datos);
            }

            return lista;
        }

        public ArrayList BuscarDataGridView(string buscar)
        {
            ArrayList lista = new ArrayList();
            objCajaEntidades = new cajaEntities();

            var query = from rc in objCajaEntidades.requerimiento_cabecera
                        join rr in objCajaEntidades.personas on rc.id_responsable_requerimiento equals rr.id //responsable de requerimiento
                        join ra in objCajaEntidades.personas on rc.id_resonsable_aprobacion equals ra.id //responsable de aprobar el requerimiento
                        select new
                        {
                            ID = rc.id,
                            FECHA_SOLICITUD = rc.fecha_solicitud,
                            FECHA_APROBACION = rc.fecha_aprobacion,
                            ID_RESPONSABLE_REQUERIMIENTO = rc.id_resonsable_aprobacion,
                            RESPOSABLE_REQUERIMIENTO = rr.rs,
                            ID_RESPONSABLE_APROBACION = ra.id,
                            RESPONSABLE_APROBACION = ra.rs,
                            APROBADO = rc.aprobado,
                            MONEDA = rc.moneda,
                            MOTIVO = rc.motivo,
                            TOTAL = rc.total
                        };
            
                foreach (var datos in query)
                {
                    lista.Add(datos);
                }

            return lista;
        }
    }
}
